package com.yuncheng.spcyApi.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuncheng.spcyApi.selectXzxkApi.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@DS("multi-datasource1")
public interface XzXkMapper {

    /**
     * 业务分类字典
     */
    List<Map<String,Object>> zdglYwflzd(@Param("jdbm") String jdbm, @Param("pid") String pid);

    /**
     * 字典查询-通过字典编码查询，pid
     * @param jdbm
     * @return
     */
    List<Map<String,Object>> zdglTree(@Param("jdbm") String jdbm);

    /**
     * 业务字段 - 通过字段编码、字段名称、业务字段明细值
     */
    List<Map<String,Object>> ywzdWithZdmcOrZdbm(@Param("zdmc") String zdmc,@Param("zdbm") String zdbm, @Param("zdz")String zdz);

    /**
     * 行政相对人基本信息
     * @param tyshxydm 社会信用代码
     * @param xdrmc 企业名称
     * // 相对人类别;@vaule 1|2|3：法人及非法人组织|个体工商户|自然人
     */
    List<XzspXzxdrJbxxVo> quertXzxdrJbxx(@Param("tyshxydm") String tyshxydm, @Param("xdrmc") String xdrmc);

    /**
     * 根据统一社会信用代码-获取行政相对人基本信息
     * */
    String selectXzxdrIdByTyshxydm(@Param("tyshxydm") String tyshxydm);

    /**
     * 行政相对人员信息
     * // sfjkz 是否有健康证;@values 0:无健康证 | 1:有健康证
     */
    List<Map<String,Object>> queryXzxdrRyxx(@Param("xzxdrjbxxid") String xzxdrjbxxid);

    /**
     * 行政相对人员信息
     * @param fzrlxs 查询人员分类
     * @param pcfzrlxs 排除人员分类
     */
    List<XzspXzxdrXdrryVo> selectXzxdrRyxxByJbxxId(@Param("xzxdrjbxxid") String xzxdrjbxxid,
                                                   @Param("fzrlxs") String fzrlxs,
                                                   @Param("pcfzrlxs") String pcfzrlxs);

    /**
     * 行政相对人员信息(关键人员)
     * // sfjkz 是否有健康证;@values 0:无健康证 | 1:有健康证
     */
    List<XzspXzxdrXdrryVo> selectXzxdrRyjbxxByJbxxId(@Param("xzxdrjbxxid") String xzxdrjbxxid, @Param("fzrlxs") String fzrlxs);

    /**
     * 流转历史记录
     */
    List<XzspLcLsjlVo> lcLsJl(@Param("sqsxid") String sqsxid);

    /**
     * 历史表
     */
    Map<String,Object> searchLsb(@Param("sqsxid") String sqsxid);

    /**
     * 历史记录
     */
    Map<String,Object> searchLsjl(@Param("lsbid") String lsbid);

    /**
     *  行政区划信息
     */
    Map<String, Object> selectXzqh(@Param("dybm") String dybm);

    /**
     * 查询附件信息
     * @param sqsxid
     * @param cllb 材料类别
     * @return CLLB 材料类别;企业只能查看本企业的提交材料、 整改材料
     * @values 0:企业提交材料 | 1:审批材料 | 2:现场审查（检查）材料 | 3:抽验材料 | 4:企业整改材料 | 5:企业缴费材料
     */
    List<Map<String,Object>> selectFjxx(@Param("sqsxid")String sqsxid,@Param("cllb")String cllb);

    /**
     * 可以根据附件备注查询附件
     * @param sqsxid
     * @param cllb
     * @param fjbz 附件备注（补齐补正材料、等）
     * @return
     */
    List<Map<String,Object>> selectFjxxBybqbz(@Param("sqsxid")String sqsxid,@Param("cllb")String cllb,@Param("fjbz")String fjbz);

    /**
     * 可以查询大于指定日期的附件
     * @param sqsxid
     * @param cllb
     * @param fjbz
     * @return
     */
    List<Map<String,Object>> selectFjxxSqsjWithDySlsj(@Param("sqsxid")String sqsxid,@Param("cllb")String cllb,@Param("fjbz")String fjbz,@Param("slzhsj")String slzhsj,@Param("slzqsj")String slzqsj);

    /**
     * 查询撤件申请附件
     * @param sqsxid
     * @param clmlid 材料目录id
     */
    List<Map<String,Object>> selectFjxxByCjsq(@Param("sqsxid")String sqsxid,@Param("clmlid")String clmlid);

    /**
     * 查询附件
     * @param id 附件id
     * @return id:附件id, fjymc:附件名称, fjbclj：附件路径
      */
    List<Map<String,Object>> selectFjxxById(@Param("id")String id);

    /** 查询附件地址 */
    List<String> selectFjxxCfljById(@Param("id")String id);

    /** 申请事项信息 */
    XzspSqsxVo selectSqsx(@Param("sqsxid")String sqsxid);

    /** 申请事项信息-根据申请单编号 */
    XzspSqsxVo selectSqsxBySqdbh(@Param("sqdbh")String sqdbh);

    /** 申请事项-编码 */
    XzspSqsxVo selectSqsxBm(@Param("sqsxid")String sqsxid);

    /** 申请事项-企业所在地区 */
    QySzdqVo selectSqsxQySzdq(@Param("sqsxid")String sqsxid);

    /** 申请事项-企业联系人相关信息 */
    XzspXzxdrJbxxVo selectQylxrxgxxBySqsx(@Param("sqsxid")String sqsxid);

    /**
     *  企业信息
     * // xdr_lb 相对人类别;@vaule 1|2|3：法人及非法人组织|个体工商户|自然人
     * // sflsqyjt 是否隶属企业集团;@values 0:否 | 1:是
     * // sfssgsbs 是否上市公司标识;@values 0:否 | 1:是
     * // zjfl 证件分类;@values 0:许可证 | 1:备案凭证 | 2:批件
     * // sffrqy 是否法人企业 0:否 1:是
     * // lxrsfzjlx 联系人身份证件类型;@values 1:中华人民共和国居民身份证 | 4:外国（地区）护照 | 5:港澳台永久性居民身份证 | 2:中华人民共和国军官证 | 3:中华人民共和国警官证 | 9:其他有效身份证件
     * @param sqsxid
     * @return
     */
    List<XzspSqsxXdrxxVo> selectQyxxList(@Param("sqsxid")String sqsxid);

    /**
     * 企业人员
     * @param sqsxid
     * @param fzrlx 人员类型 （00/其他人员）
     * @param isPrimary 是否主要人员(true/false)
     * @return
     */
    List<QyRyVo> selectQyRyList(@Param("sqsxid")String sqsxid, @Param("fzrlx") String fzrlx, @Param("isPrimary") boolean isPrimary);

    /** 企业关键人员姓名 */
    List<QyRyVo> selectQyGjRyJbxxList(@Param("sqsxid")String sqsxid, @Param("fzrlx") String fzrlx, @Param("isPrimary") boolean isPrimary);

    List<QyRyVo> selectQyRyListVo(@Param("sqsxid")String sqsxid, @Param("fzrlx") String fzrlx, @Param("isPrimary") boolean isPrimary);

    /**
     * 企业人员
     * @param xdrid
     * @param fzrlx 人员类型 （00/其他人员）
     * @param isPrimary 是否主要人员(true/false)
     * @return
     */
    List<QyRyVo> selectQyRyListTwo(@Param("xdrid")String xdrid, @Param("fzrlx") String fzrlx, @Param("isPrimary") boolean isPrimary);


    /**
     * 获取对应人员的企业兼职情况总库
     */
    List<QyRyJzqkVo> selecyQyRyJzqkTotalList(@Param("bean")QyRyJzqkVo qyRyJzqkVo);

    /**
     * 获取对应人员的企业兼职情况总库
     */
    Page<QyRyJzqkVo> selecyQyRyJzqkTotalPageList(Page<QyRyJzqkVo> page, @Param("bean")QyRyJzqkVo qyRyJzqkVo);


    /**
     * 企业地图位置对照
     * @param sqsxid
     * @return  SFDZGB 是否地址改变;@values 0：地址未变 | 1：地址新增 | 2：地址修改 | 3：地址删除
     */
    List<Map<String,Object>> selectDtWzDz(@Param("sqsxid")String sqsxid);

    /******************************************  药品生产  *********************************************************/

    /**
     * 药品出口销售证明申请
     */
    List<XzspYpckxszmVo> selectYpckxszm(@Param("sqsxid")String sqsxid);

    /**
     * 企业 生产、经营、配置范围
     * @param sqsxid
     * @return   // ZJFL 证件分类;@values 0:许可证 | 1:备案凭证 | 2:批件
     * SFBGQ (是否变更前;此字段变更时使用 @values 1:变更后 | 2:变更前不是变更项时 | 0:缺省)
     */
    List<XzspJyfwVo> selectJyfw(@Param("sqsxid")String sqsxid);

    /**
     * 变更 -- 配制范围或配制地址
     * @param tyshxydm  统一社会信用代码
     * @param sqlx  申请类型;@value 1：新办/设立|2：变更|3：换证|4：注销|5：补办
     * @return  SFBGQ (是否变更前;此字段变更时使用 @values 1:变更后 | 2:变更前不是变更项时 | 0:缺省)
     */
    List<Map<String,Object>> selectJyfwBySqlx(@Param("tyshxydm") String tyshxydm, @Param("sqlx") String sqlx);

    /**
     * 生产、经营产品
     * @param sqsxid
     * @return
     * // sfwtsc 0:自行生产 | 1：受托生产 | 2:委托生产
     * // sfdy 是否打印标志;@values 0:不需要 | 1:需要
     * // sf_jd 是否加碘标识;@values 0:否 | 1:是
     * // sf_jyfw_cpbs 新旧生产/经营范围目录下的产品标识;@values 1:新生产 | 2:旧生产
     * // cplb 产品类别;@values 0:无菌|1:植入|2:体外诊断试剂|4:定制式义齿|5:独立软件|3:其他
     */
    List<XzspXksqSxsqCpVo> selectCp(@Param("sqsxid") String sqsxid);

    /**
     * 企业药品生产车间、配置室
     * @param sqsxid
     * @return
     */
    List<XzspSccjVo> selectSccj(@Param("sqsxid") String sqsxid);

    /**
     * 药品生产 委托或受托情况
     * @param sqsxxdrxxid 相对人id（申请企业id）
     * @return  WTLX (委托类型;@value 1：委托|2：受托)
     */
    List<XzspYpscwtHstqk> selectWtStQk(@Param("sqsxxdrxxid") String sqsxxdrxxid);

    /**
     * 企业认证
     */
    List<XzspQyrzVo> selectQyrz(@Param("sqsxid") String sqsxid);

    /**
     * 药品生产企业经营场所
     * // sfsxkfsscsgn 能否实现库房进、出、存信息两地间实时传输功能   0：否 1：是
     * // sfsxkfwsdgn 能否实现库房温湿度在线监测、及时控制功能   0：否 1：是
     * // sf_zycc 是否自有仓储;@values 0:不是自有仓储 | 1:自有仓储
     * // sf_wtcc 是否委托仓储;@values 0:不是委托仓储 | 1:委托仓储
     */
    List<XzspJycsVo> selectJycs(@Param("sqsxid") String sqsxid);

    /**
     * 企业项目资产、产品品种
     */
    List<XzspXmzcVo> selectXmzc(@Param("sqsxid") String sqsxid);


    /**
     * 企业人员数量
     */
    List<XzspRyslVo> selectRysl(@Param("sqsxid") String sqsxid);

    /**
     * GMP符合性检查
     */
    XzspGmpfhxjcVo selectGmpFhxJc(@Param("sqsxid") String sqsxid);

    /**
     * GMP符合性检查产品信息
     */
    List<XzspGmpfhxjcCpxxVo> selectGmpFhxJcCpxx(@Param("sqsxid") String sqsxid);

    /**
     * 事项申请互联网网站服务
     * // wzsqlx 网站服务申请类型;@values 0：无 | 1：经营性 | 2：非经营性
     * // ypwlxslx 药品网络销售类型  1：自建类 2：入驻类 3：自建+入驻
     * // ypwlxsqyztyt 药品网络销售企业主体业态 1:药品上市许可证持有人 2:药品生产企业 3:药品批发企业 4:药品零售企业
     */
    List<XzspWzfwVo> selectWzfw(@Param("sqsxid")String sqsxid);

    /**
     * 出口欧盟原料药证明文件申请
     */
    List<XzspCkomYlyzmwjVo> selectCkomYlyZmwj(@Param("sqsxid") String sqsxid);

    /**
     * 出口欧盟原料药明细
     * 是否通过我国GMP认证;@value 1：是|2：否
     */
    List<XzspChomYlymxVo> selectCkomYlyMx(@Param("sqsxid") String sqsxid);

    /**
     * 药品委托生产附加表
     */
    List<XzspYpwtscfjVo> selectYpwtScfj(@Param("sqsxid") String sqsxid);

    /**
     * 医疗机构放射药品使用情况
     * // yplx 药品类型;@values 1:第一类放射性药品 | 2:第二类放射性药品 | 3:第三类放射性药品 | 4:第四类放射性药品
     */
    List<XzspYljgfsxypsyVo> selectYljgFsxYpsy(@Param("sqsxid") String sqsxid);

    /**
     * 药品使用科室情况表
     */
    List<XzspYpsyksVo> selectYpsyks(@Param("sqsxid") String sqsxid);

    /**
     * 医疗机构药品使用科室人员表
     */
    List<XzspYpsyksryVo> selectYpsyksry(@Param("sqsxid") String sqsxid);

    /******************************************  医疗器械  *********************************************************/

    /**
     * 创新医疗器械特别审批申请
     */
    List<XzspCxylqxtbspVo> findCxYlqxTbsp(@Param("sqsxid") String sqsxid);

    /**
     *  医疗器械 - 产品信息
     * @return cplb (产品类别;@value 1:Ⅰ类|2:Ⅱ类|3:Ⅲ类|4:体外试剂Ⅰ类|5:体外试剂Ⅱ类|6:体外试剂Ⅲ类)
     * zclb (注册类别;@value 1:首次注册|2:延续注册|3:变更注册|4:注册证注销|5:注册证补发)
     */
    List<XzspYlqxcpVo> findYlqxCpxx(@Param("sqsxid") String sqsxid);

    /**
     *  医疗器械 - 分类界定
     * @return sf_tjzxsp （是否提交注册审评;@value 0:否 | 1:是）
     * sf_scsq （是否首次申请分类界定;@value 0:否 | 1:是）
     * qyzzjdlb （企业主张界定类别;@value Ⅰ:Ⅰ类 | Ⅱ:Ⅱ类 | Ⅲ:Ⅲ类 | IV:不作为医疗器械）
     * jdlb （界定类别;@value Ⅰ:Ⅰ类 | Ⅱ:Ⅱ类 | Ⅲ:Ⅲ类 | IV:不作为医疗器械）
     */
    List<XzspYlqxfljdVo> findYlqxFljd(@Param("sqsxid") String sqsxid);

    /**
     * 医疗器械 - 生产其他信息
     * @return zcsbssfwzjbg (注册申报时是否为自检报告;@value 0：否|1：是)
     * zctxhcxs (注册体系核查形式;@value 1：是资料审查|2：现场核查|3：其他)
     */
    List<XzspYlqxscqtxxVo> findYlqxScQtxx(@Param("sqsxid") String sqsxid);

    /******************************************  药品注册  *********************************************************/

    /**
     * 医疗机构制剂信息
     * // zjfl 制剂分类 "0:未选择 1：中药制剂 2：化学制剂 3：生物制品制剂 4：民族药制剂"
     * // sfwtpz 是否委托配制 "0：默认 1：是 2：否"
     * // sfsqjmlc 是否申请减（免）临床 "0：默认 1：是 3：否"
     * // sfdjpz 是否独家配制 "0：默认 1：是 4：否"
     * // sftssbmzyc 是否同时申报民族药材 "0：默认 1：是 5：否"
     */
    List<XzspYljgzjxxVo> ypzcYljgZjxx(@Param("sqsxid") String sqsxid);

    /**
     * 国产药品补充申请
     * jnwzcflbz 境内境外注册分类标志;@value 1：境内注册|2：境外注册
     * sqflbz 申请分类标志;@value 01：新药申请|02：按新药管理的申请|03：仿制申请|04：补充申请|05：再注册申请|06：生产再注册申请|07：进口再注册申请|08：药包材生产的补充申请 |09：药包材进口的补充申请|10：生产申请|11：进口申请
     * sfwotc 是否为OTC;@value 1：是|2：否
     * ysqpzzt 原申请品种状态;@value 1：已上市|2：已批准临床|3：在审评或审批中
     * sfwjbyw 是否为基本药物;@value 1：是|2：否
     * sfdjpz 是否独家品种;@value 1：广西独家|2：国家独家|2：不是独家
     * zypzbh 中药品种保护;@value 1：是|2：否
     */
    XzspGcypbcsqVo ypzcGcypBcSq(@Param("sqsxid") String sqsxid);


    /**
     * 国产药品补充申请历次申请情况
     */
    List<XzspGcypbcsqlcsqqkVo> ypzcGcypBcSqLcSqQk(@Param("sqsxid") String sqsxid);

    /**
     * 国产药品补充申请委托研究机构
     */
    List<XzspGcypbcsqwtyjjgVo> ypzcGcypBcSqWtYjjg(@Param("sqsxid") String sqsxid);

    /**
     * 国产药品补充申请原辅料来源
     */
    List<XzspGcypbcsqyfllyVo> ypzcGcypBcSqYflly(@Param("sqsxid") String sqsxid);

    /**
     * 国产药品补充申请 中药材标准
     */
    List<XzspGcypbcsqzycbzVo> ypzcGcypBcSqZycbz(@Param("sqsxid") String sqsxid);

    /******************************************  药品流通  *********************************************************/

    /**
     * 仓库信息
     *  cksyqlx 仓库所有权类型;@values 0:租用 | 1:自有
     *  wsckbglx 外设仓库申请变更类型;@values 0:不变 | 1:新增 | 2:变更前 | 4:注销
     *  wsckxzbs 外设仓库新增标识;@values 0:原有仓库 | 1:申请新添加仓库
     *  sflk 是否为冷库;@values 0:非冷库 | 1:冷库
     *  zjfl 证件分类;@values 0:许可证 | 1:备案凭证 | 2:批件
     */
    List<XzspCkVo> ypltSelectCkxx(@Param("sqsxid") String sqsxid);

    /**
     *  设备情况
     *  sblx 设备类型;@values 1:生产设备 | 2:检验设备
     *  zjfl 证件分类;@values 0:许可证 | 1:备案凭证 | 2:批件
     */
    List<XzspSbVo> ypltSelectSbQk(@Param("sqsxid") String sqsxid);

    /**
     *  计算机配备
     */
    List<XzspJsjpbVo> ypltSelectJsjPb(@Param("sqsxid") String sqsxid);

    /**
     *  药品运输车辆、运输设备表
     */
    List<XzspYssbVo> ypltSelectYssb(@Param("sqsxid") String sqsxid);


    /**
     * 药品批发经营资格
     */
    List<XzspYppfjyzgVo> ypltYppfjyzg(@Param("sqsxid") String sqsxid);

    /**
     * 生产第一类中的药品类易制毒化学品审批
     */
    List<XzspScdylzdyplyzdhxpVo> scDylzdYplYzdhxpSp(@Param("sqsxid") String sqsxid);

    /******************************************  化妆品  *********************************************************/

    /**
     * 国产非特殊用途化妆品
     * // scqygx 生产企业与实际生产企业的关系;@value 0：委托生产|1：同属一个集团
     */
    List<XzspGcftsythzpVo> hzpSelectGcftsytHzp(@Param("sqsxid") String sqsxid);

}
